/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "KeyInputImpl.h"
#include "MockGlobalResult.h"

KeyInputImpl::KeyInputImpl() {}

KeyInputImpl& KeyInputImpl::GetInstance()
{
    static KeyInputImpl instance;
    return instance;
}

void KeyInputImpl::DispatchOsInputMethodEvent() const
{
    g_dispatchOsInputMethodEvent = true;
}

void KeyInputImpl::DispatchOsKeyEvent() const
{
    g_dispatchOsKeyEvent = true;
}

void KeyInputImpl::SetKeyEvent(const int32_t keyCodeVal, const int32_t keyActionVal,
    const std::vector<int32_t> pressedCodesVal, const std::string keyStrVal)
{
    keyCode = keyCodeVal;
    keyAction = keyActionVal;
    keyString = keyStrVal;
    pressedCodes.clear();
    for (int32_t num : pressedCodesVal) {
        pressedCodes.push_back(OHOS::MMI::KeyCode(num));
    }
}

void KeyInputImpl::SetCodePoint(const unsigned int codePointVal)
{
    codePoint = codePointVal;
}